* [表单策略组]
* @type {Object}
*/
let formStrategies = {
* [空值判断]
* @param {[Any]} val [校验值]
* @param {[String]} msg [错误信息]
*/
isEmpty: (val, msg) => {
if (!val) {
return msg
}
},
* [特定值判断,严格判断]
* @param {[String]} val [校验值]
* @param {[String]} assignedVal [对比值]
* @param {[String]} msg [错误信息]
*/
eqAssignedVal: (val, assignedVal, msg) => {
if (val !== assignedVal) {
return msg
}
},
* [最小值判断,限 Number]
* @param {[String]} val [校验值]
* @param {[String]} min [对比值]
* @param {[String]} msg [错误信息]
*/
ltMinVal: (val, min, msg) => {
let parseVal = parseFloat(val)
let parseMin = parseFloat(min)
if (isNaN(parseVal) || isNaN(parseMin) || parseVal < parseMin) {
return msg
}
},
* [最大值判断,限 Number]
* @param {[String]} val [校验值]
* @param {[String]} max [对比值]
* @param {[String]} msg [错误信息]
*/
gtMaxVal: (val, max, msg) => {
let parseVal = parseFloat(val)
let parseMax = parseFloat(max)
if (isNaN(parseVal) || isNaN(parseMax) || parseVal > parseMax) {
return msg
}
},
* [手机号格式判断]
* @param {[String]} val [校验值]
* @param {[String]} msg [错误信息]
*/
isMobile: (val, msg) => {
if (!(/^1[34578]\d{9}$/.test(val))) {
return msg
}
},
* [验证码格式校验]
* @param {[String]} val [校验值]
* @param {[String]} msg [错误信息]
*/
isSms: (val, msg) => {
if (!/^\d{6}$/.test(val)) {
return msg
}
},
* [验证值是否为整百数据格式]
* @param {[String]} val [校验值]
* @param {[String]} msg [错误信息]
*/
isHundredInterge: (val, msg) => {
if (!/^\w+00$/.test(val)) {
return msg
}
},
* [验证值是否是整数]
* @param {[Number]} val [校验值]
* @param {[String]} msg [错误信息]
*/
isInterge: (val, msg) => {
if (val % 1 !== 0) {
return msg
}
}
}
* 表单策略组执行类
*/
class FormValidate {
* cache 验证规则缓存
*/
constructor () {
this.cache = []
}
* [添加验证规则]
* @param {[String]} val [校验值]
* @param {[Array]} rules [验证规则,策略组中必须存在该规则]
*/
add (val, rules) {
for (let rule of rules) {
let strategyAry = rule.strategy.split(':')
let msg = rule.msg
this.cache.push(() => {
let strategy = strategyAry.shift()
strategyAry.unshift(val)
strategyAry.push(msg)
return formStrategies[strategy].apply(this, strategyAry)
})
}
}
* [验证规则延迟执行]
*/
start () {
for (let validateFunc of this.cache) {
let msg = validateFunc()
if (msg) {
return msg
}
}
}
}
export default FormValidate
let fv = new FormValidate()
let username = document.querySelector('#username').value
let pwd = document.querySelector('#password').value
fv.add(username, [{
strategy: 'isEmpty',
msg: '手机号不能为空'
}, {
strategy: 'isMobile',
msg: '手机号格式不正确'
}])
fv.add(password, [{
strategy: 'ltMinVal:6',
msg: '密码长度不能少于 6 位'
}, {
strategy: 'gtMaxVal:20',
msg: '密码长度不能多于 20 位'
}])
let msg = fv.start()
if (msg) {
console.error(msg)
} else {
...
}